from typing import List
from config import client, modelName, Message

"""
    大模型多伦对话
    接口入参例子
    第一轮: messages: [{"role": "system", "content": "提示词" },{"role": "user", "content": "第一轮对话的用户输入" }]
    第二轮: messages: [{"role": "system", "content": "提示词" },{"role": "user", "content": "第一轮对话的用户输入" },
            {"role": "assistant", "content": "第一轮对话的大模型回复" },{"role": "user", "content": "第二轮对话用户输入" }]
    注意：每一轮对话都要把之前所有的对话都带上，包括系统提示词，不然大模型会忘记之前的对话
    接口返参: 
    { "message": {"content": "大模型回复","role": "assistant","refusal": null}}
    反参里面的 content 和 role 要在下一轮对话里带回
"""
def chatRound(messages: List[Message]):
    print(f'chatRound2:{messages}')
    try:
        completion = client.chat.completions.create(
            model=modelName,  ##  deepseek-reasoner  /   deepseek-chat
            messages=messages,
            temperature=0,
            stream=False,
        )
        print(f'completion:{completion}')
        return { "code":200,"message":"", "result": completion.choices[0].message   }
    except Exception as e:
        print(f"发生错误: {e}")
        # 这里可以根据具体需求进行错误处理，比如返回默认值或者抛出异常
        # 示例：返回 None，具体根据业务逻辑调整
        return { "code":500,"message":f"发生错误: {e}","result": ''}
      
